package org.solovyev.android.calculator.view;
import android.text.Editable;
import android.view.View;
import android.widget.EditText;
import javax.annotation.Nonnull;
import static android.view.HapticFeedbackConstants.*;
public class EditTextLongClickEraser extends BaseLongClickEraser implements View.OnClickListener {
@Nonnull
private final EditText editView;
private EditTextLongClickEraser(@Nonnull View view, @Nonnull EditText editView, boolean vibrateOnKeypress) {
super(view, vibrateOnKeypress);
this.editView = editView;
view.setOnClickListener(this);
}
public static void attachTo(@Nonnull View view, @Nonnull EditText editView, boolean vibrateOnKeypress) {
new EditTextLongClickEraser(view, editView, vibrateOnKeypress);
}
@Override
protected void onStopErase() {
}
@Override
protected void onStartErase() {
}
@Override
protected boolean erase() {
final int start = editView.getSelectionStart();
final int end = editView.getSelectionEnd();
if (start < 0 || end < 0) {
return false;
}
final Editable text = editView.getText();
if (start != end) {
text.delete(Math.min(start, end), Math.max(start, end));
} else if (start > 0) {
text.delete(start - 1, start);
}
return text.length() != 0;
}
@Override
public void onClick(View v) {
erase();
if (vibrateOnKeypress) {
v.performHapticFeedback(KEYBOARD_TAP, FLAG_IGNORE_GLOBAL_SETTING | FLAG_IGNORE_VIEW_SETTING);
}
}
}